#!/usr/bin/env node // 指明该脚本文件要使用node来执行

const app = require('./app');
const http = require('http'); // http模块

// 服务器配置
const serverConfig = require('config/server-config');

// 设置端口
const port = serverConfig.port;
app.set('port', port);

// 创建HTTP服务器
const server = http.createServer(app);
// 在所有网络接口上监听提供的端口
server.listen(port);

server.on('error', onError); // 监听到异常触发
server.on('listening', onListening); // 开始监听触发 = server.listen(port, onListening)

/**
 * HTTP服务器error事件监听器
 * @param {Object} error
 */
function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }
  let bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port;
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' 权限被限制');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' 被占用');
      process.exit(1);
      break;
    default:
      console.log('main.js````````````````');
      console.error(error);
  }
}

/**
 * HTTP服务器开始监听事件
 */
function onListening() {
  let addr = server.address();
  console.log('````````Listening on ' + serverConfig.host + ':' + serverConfig.port + '````````');
}
